package com.clouddms.repository;

import com.clouddms.entity.FileType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.Optional;

/**
 * 文件类型数据访问层接口
 */
@Repository
public interface FileTypeRepository extends JpaRepository<FileType, Integer> {

    /**
     * 根据类型名称查找文件类型
     * @param typeName 类型名称
     * @return 文件类型
     */
    @Query(value = "SELECT * FROM file_type ft WHERE ft.type_name = :typeName ORDER BY ft.type_id ASC LIMIT 1", nativeQuery = true)
    Optional<FileType> findByTypeName(@Param("typeName") String typeName);

    /**
     * 根据文件扩展名查找匹配的文件类型
     * @param extension 文件扩展名
     * @return 文件类型
     */
    @Query(value = "SELECT * FROM file_type ft WHERE LOWER(ft.file_extension) LIKE LOWER(CONCAT('%', :extension, '%')) OR ft.file_extension = '*' ORDER BY CASE WHEN ft.file_extension = '*' THEN 1 ELSE 0 END, ft.type_id ASC LIMIT 1", nativeQuery = true)
    Optional<FileType> findByFileExtensionContaining(@Param("extension") String extension);

    /**
     * 根据MIME类型查找文件类型
     * @param mimeType MIME类型
     * @return 文件类型
     */
    Optional<FileType> findByMimeType(String mimeType);
}